package com.zwz.shiro;

import org.apache.shiro.config.Ini;
import org.apache.shiro.config.Ini.Section;
import org.springframework.beans.factory.FactoryBean;

/**
 * 产生责任链，确定每个url的访问权限
 * @author zhangwanzhong
 * 2015年12月27日 下午3:52:07
 */
public class ChainDefinitionSectionMetaSource implements FactoryBean<Section> {
	
	// 静态资源访问权限
	private String filterChainDefinitions = "/static/**=anon";

	@Override
	public Section getObject() throws Exception {
		Ini ini=new Ini();
		// 加载默认的url
		ini.load(filterChainDefinitions);
		Section section=ini.getSection(Ini.DEFAULT_SECTION_NAME);
		// 循环Resource的url,逐个添加到section中。section就是filterChainDefinitionMap,
		// 里面的键就是链接URL,值就是存在什么条件才能访问该链接
		section.put("/test/get.do", "anon");
		section.put("/test/get1.do", "roles[user,admin]");
		section.put("/test/get2.do", "roles[admin]");
		section.put("/test/get3.do", "roles[manage]");
		section.put("/test/get4.do", "perms[user,admin]");
		return section;
	}

	@Override
	public Class<?> getObjectType() {
		return this.getClass();
	}

	@Override
	public boolean isSingleton() {
		return false;
	}
	
}
